package org.lq.ht.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class CastUtils {
	/**
	 * 年月日
	 */
	public static final String DEFALULT_DATE_PATTERN ="yyyy-MM-dd";
	/**带有时分秒的时间
	 * 
	 */
	public static final String TIME_DATE_PATTERN = "yyyy-MM-dd hh:mm:ss";
	/**
	 * 生成单号或者文件名字使用
	 */
	public static final String TIME_DATE_NO = "yyyyMMddhhmmss";
	/**
	 * 默认不传转化的格式默认("yyyy-MM-dd")
	 * 将util.Date转化为时间字符串,
	 * @param date
	 * @return
	 */
	public static String format(Date date) {
		return date == null ? "" :format(date,DEFALULT_DATE_PATTERN);
	}
	/**
	 * 将时间类型转换成精确时间
	 * @param date
	 * @return
	 */
	public static String formatPrecise(Date date) {
		return date == null?"":format(date,TIME_DATE_PATTERN);
	}
	/**传转化的格式
	 * 将util.Date转化为时间
	 * @param date
	 * @param pattern
	 * @return
	 */
	public static String format(Date date,String pattern) {
		return date == null ? "" : new SimpleDateFormat(pattern).format(date);
	}
	/**
	 * 将传入的时间字符串转化成sqlDate
	 * @param Strdate
	 * @param pattern 
	 * @return
	 */
	public static java.sql.Date parse2 (String strDate, String pattern ){
		try {
			return strDate==null&&"".equals(strDate)?null:new java.sql.Date(parse(strDate,pattern).getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
	/**
	 * 默认不传入转为时间的格式
	 * 默认传入时间格式为"yyyy-MM-dd"
	 * 将时间字符串转化为util.Date类对象
	 * @param strDate
	 * @return
	 * @throws ParseException
	 */
	public static java.util.Date parse(String strDate) throws ParseException{
		return parse (strDate,DEFALULT_DATE_PATTERN);
	}
	/**传入转化为时间的格式pattern
	 * 将时间字符串转化为util.Date类对象
	 * @param strDate
	 * @param pattern
	 * @return
	 * @throws ParseException
	 */
	public static java.util.Date parse(String strDate,String pattern)throws ParseException{
		return strDate == null && "".equals(strDate)? null:new SimpleDateFormat(pattern).parse(strDate);
	}
	public static String formatNo(Date date) {
		return format(date,TIME_DATE_NO);
	}
	/**
	 * java.util.Date转换为sql.Timestamp
	 * @param date
	 * @return
	 */
	public static java.sql.Timestamp utilDateToSqlTimestamp(java.util.Date date){
		
		return date==null?null:new java.sql.Timestamp(date.getTime());
	}
	/**
	 * 将util.Date转化为sql.Date
	 * @param date
	 * @return
	 */
	public static java.sql.Date utilDateToSqlDate(java.util.Date date){
		if(date == null) {
			date = new Date();
		}
		return new java.sql.Date(date.getTime());
	}
	/**
	 * 将对象转化为字符串
	 * @param obj
	 * @return
	 */
	public static String castString(Object obj) {
		return castString(obj,"");
	}
	public static String castString(Object obj,String defaultValue) {
		return obj!=null?String.valueOf(obj):defaultValue;
	}
	public static double castDouble (Object obj,double defaultValue) {
		double value = defaultValue;
		if(obj!=null) {
			String strVal =  castString(obj);
			if(!"".equals(strVal)) {
				try {
					value = Double.parseDouble(strVal);
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return value;
	}
	/**
	 * 对象转化为double型
	 * @param obj
	 * @return
	 */
	public static double castDouble(Object obj) {
		return castDouble(obj,0);
	}
	public static int castInt(Object obj,int defaultValue) {
		int value = defaultValue;
		if(obj!=null) {
			String strVal = castString(obj);
			if(!"".equals(strVal)) {
				try {
					value = Integer.valueOf(strVal);
				} catch (NumberFormatException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return value;
	}
	/**
	 * 讲对象转化为int型
	 * @param obj
	 * @return
	 */
	public static int castInt(Object obj) {
		return castInt(obj,0);
	}
}
